// var i;
// var $resKeeper = require("./ResKeeper");
// var $autoImagZiTi = require("./AutoImagZiTi");
// var l = cc._decorator;
// var u = l.ccclass;
// var d = l.property;
// var p = l.inspector;
// var h = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.xue2 = null;
//         t.xue1 = null;
//         t.xueLb = null;
//         t.xueScript = null;
//         t.maxValue = 0;
//         t.nowvalue = 0;
//         t.nowofftime = 0;
//         t.tw = null;
//         return t;
//     }
//     __extends(t, e);
//     t.prototype.initXue = function (e) {
//         var t = this.node.getChildByName("xuetiaolb");
//         if (t) {
//             this.xueScript = t.getComponent($autoImagZiTi.default);
//             this.xueLb = t.getComponent(cc.Label);
//         }
//         this.maxValue = e;
//         this.nowvalue = e;
//         this.xue1.fillStart = 1;
//         this.xue2.fillStart = 1;
//         var o = (this.nowvalue + "").split(".");
//         if (this.xueLb) {
//             this.xueLb.string = o[0];
//         }
//         if (this.xueScript) {
//             this.xueScript.setValue(o[0]);
//         }
//     };
//     t.prototype.subXue = function (e) {
//         this.nowvalue -= e;
//         if (this.nowvalue < 0) {
//             this.nowvalue = 0;
//         }
//         var t = this.nowvalue / this.maxValue;
//         if (t < 0) {
//             t = 0;
//         }
//         this.xue2.fillStart = t;
//         if (this.tw) {
//             this.tw.stop();
//         }
//         this.tw = cc
//             .tween(this.xue1)
//             .delay(0.1)
//             .to(0.2, {
//                 fillStart: t
//             })
//             .start();
//         var o = (this.nowvalue + "").split(".");
//         if (this.xueLb) {
//             this.xueLb.string = o[0];
//         }
//         if (this.xueScript) {
//             this.xueScript.setValue(o[0]);
//         }
//     };
//     __decorate([d(cc.Sprite)], t.prototype, "xue2", void 0);
//     __decorate([d(cc.Sprite)], t.prototype, "xue1", void 0);
//     return __decorate([u], t);
// })($resKeeper.default);
// exports.default = h;

// import ResKeeper from "./ResKeeper";
// import AutoImagZiTi from "./AutoImagZiTi";

// const { ccclass, property } = cc._decorator;

// /**
//  * 血条管理类
//  * 建议类名: BloodBarManager
//  */
// @ccclass
// export default class UI_MosterXueTiao extends ResKeeper {
//     @property(cc.Sprite)
//     private xue2: cc.Sprite = null;

//     @property(cc.Sprite)
//     private xue1: cc.Sprite = null;

//     private bloodLabel: cc.Label = null;
//     private bloodScript: AutoImagZiTi = null;
//     private maxValue: number = 0;
//     private currentValue: number = 0;
//     private currentOffTime: number = 0;
//     private tween: cc.Tween = null;

//     /**
//      * 初始化血条
//      * @param maxValue 最大血量
//      * 建议方法名: initializeBloodBar
//      */
//     public initXue(maxValue: number): void {
//         const bloodLabelNode = this.node.getChildByName("xuetiaolb");
//         if (bloodLabelNode) {
//             this.bloodScript = bloodLabelNode.getComponent(AutoImagZiTi);
//             this.bloodLabel = bloodLabelNode.getComponent(cc.Label);
//         }
//         this.maxValue = maxValue;
//         this.currentValue = maxValue;
//         this.xue1.fillStart = 1;
//         this.xue2.fillStart = 1;
//         const valueParts = (this.currentValue + "").split(".");
//         if (this.bloodLabel) {
//             this.bloodLabel.string = valueParts[0];
//         }
//         if (this.bloodScript) {
//             this.bloodScript.setValue(valueParts[0]);
//         }
//     }

//     /**
//      * 减少血量
//      * @param value 减少的血量值
//      * 建议方法名: decreaseBlood
//      */
//     public subXue(value: number): void {
//         this.currentValue -= value;
//         if (this.currentValue < 0) {
//             this.currentValue = 0;
//         }
//         let fillRatio = this.currentValue / this.maxValue;
//         if (fillRatio < 0) {
//             fillRatio = 0;
//         }
//         this.xue2.fillStart = fillRatio;
//         if (this.tween) {
//             this.tween.stop();
//         }
//         this.tween = cc
//             .tween(this.xue1)
//             .delay(0.1)
//             .to(0.2, { fillStart: fillRatio })
//             .start();
//         const valueParts = (this.currentValue + "").split(".");
//         if (this.bloodLabel) {
//             this.bloodLabel.string = valueParts[0];
//         }
//         if (this.bloodScript) {
//             this.bloodScript.setValue(valueParts[0]);
//         }
//     }
// }

import ResKeeper from "./ResKeeper";
import AutoImagZiTi from "./AutoImagZiTi";

const { ccclass, property } = cc._decorator;

/**
 * 血条管理类
 * 建议类名: BloodBarManager
 */
@ccclass
export default class ViewMosterXueTiao extends ResKeeper {
  @property(cc.Sprite)
  private xue2: cc.Sprite = null;

  @property(cc.Sprite)
  private xue1: cc.Sprite = null;

  private bloodLabel: cc.Label = null;
  private bloodScript: AutoImagZiTi = null;
  private maxValue: number = 0;
  private currentValue: number = 0;
  private currentOffTime: number = 0;
  private tween: cc.Tween = null;

  /**
   * 初始化血条
   * @param maxValue 最大血量
   * 建议方法名: initializeBloodBar
   */
  public initializeBloodBar(maxValue: number): void {
    const bloodLabelNode = this.node.getChildByName("xuetiaolb");
    if (bloodLabelNode) {
      this.bloodScript = bloodLabelNode.getComponent(AutoImagZiTi);
      this.bloodLabel = bloodLabelNode.getComponent(cc.Label);
    }
    this.maxValue = maxValue;
    this.currentValue = maxValue;
    this.xue1.fillStart = 1;
    this.xue2.fillStart = 1;
    const valueParts = (this.currentValue + "").split(".");
    const integerPart = valueParts[0];

    if (this.bloodLabel) {
      this.bloodLabel.string = integerPart;
    }
    if (this.bloodScript) {
      this.bloodScript.setSprites(integerPart);
    }
  }

  /**
   * 减少血量
   * @param value 减少的血量值
   * 建议方法名: decreaseBlood
   */
  public decreaseBlood(value: number): void {
    this.currentValue -= value;
    if (this.currentValue < 0) {
      this.currentValue = 0;
    }

    let fillRatio = this.currentValue / this.maxValue;
    if (fillRatio < 0) {
      fillRatio = 0;
    }

    this.xue2.fillStart = fillRatio;

    if (this.tween) {
      this.tween.stop();
    }

    this.tween = cc
      .tween(this.xue1)
      .delay(0.1)
      .to(0.2, { fillStart: fillRatio })
      .start();

    const valueParts = (this.currentValue + "").split(".");
    const integerPart = valueParts[0];

    if (this.bloodLabel) {
      this.bloodLabel.string = integerPart;
    }
    if (this.bloodScript) {
      this.bloodScript.setSprites(integerPart);
    }
  }
}